package com.tensai.study.java.newconcept.typefunctionprogram.base.java_util_function.supplier;

import org.junit.Test;

import java.util.function.Supplier;

/**
 * 生产者 无参一反
 *
 * @author Tensai
 */
public class SupplierTest {

	/**
	 * 获取一个泛型参数指定类型的对象数据
	 *
	 * @param integerSupplier 方法的参数为Supplier，泛型使用Integer
	 * @return 指定类型的对象数据
	 */
	public static Integer arrayMax(Supplier<Integer> integerSupplier) {
		return integerSupplier.get();
	}

	@Test
	public void test() {
		String msgA = "Hello ";
		String msgB = "World ";
		System.out.println(
				getString(
						() -> msgA + msgB
				)
		);
	}

	private String getString(Supplier<String> stringSupplier) {
		return stringSupplier.get();
	}

	/**
	 * 求最大值
	 */
	@Test
	public void sumSupplierTest() {
		int[] numbers = {100, 200, 300, 400, 500, -600, -700, -800, -900, -1000};
		int numberMax = arrayMax(
				() -> {
					int max = numbers[0];
					for (int number : numbers) {
						if (max < number) {
							max = number;
						}
					}
					return max;
				}
		);
		System.out.println("数组中的最大值为：" + numberMax);
	}
}
